IAxis.CyclicSwitch 方法
使用軸位置來控制重複觸發數位輸出的開關。當軸達到特定的位置,開關即開啟或關閉,開關可透過軸向前或向後移動的方向來控制。
命名空間:IntervalZero.KINGSTAR.Base.Class組合: IntervalZero.KINGSTAR.Base.Class (於 IntervalZero.KINGSTAR.Base.dll) 版本:4.4.0.0
語法
void DigitalCamSwitch(
McOutput output,
double startPosition,
McCamSwitch cyclicSwitch,
McLengthType intervalType,
double interval,
McLengthType durationType,
double duration,
McSource valueSource
)
Sub DigitalCamSwitch(
output As McOutput,
startPosition As Double,
cyclicSwitch As McCamSwitch,
intervalType As McLengthType,
interval As Double,
durationType As McLengthType,
duration As Double,
valueSource As McSource
)
參數
output
型別:McOutput
選擇對應軌道所控制的數位輸出。
startPosition
型別:double
開關開啟的位置。
cyclicSwitch
型別:McCamSwitch
控制開關動作。
- TrackNumber:值必須為零。
- FirstOnPosition:值必須為非負,為各週期開始位置相關的距離。
- LastOnPosition:值必須為正,且較 FirstOnPosition 為大,為各週期開始位置相關的距離。
- Duration:值必須為正。
intervalType
型別:McLengthType
Interval 類型。可使用 mcDistance 與 mcTime。
interval
型別:double
週期長度。依照所選的 IntervalType 而定,值必須為正。
durationType
型別:McLengthType
Duration 類型。可使用 mcDistance 與 mcCount。
duration
型別:double
週期重複的持續時間,依照所選的 DurationType 而定,值必須為正。
valueSource
型別:McSource
定義軸值的來源,例如位置:
- mcCommandedValue, mcSetValue – 同步設定值。建議使用此設定。
- mcActualValue – 同步實際值。此設定可能不穩定。
- mcSecondEncoderValue – 從第二編碼器讀取的實際值。
備註
- McCamSwitch 為供應商特定的結構,用於定義數位凸輪的開關。
- McOutput 為供應商特定的結構,用於連接至(實體)輸出,若使的是您個人的伺服驅動器的數位輸出 (DO),需在 ISubsystem.Start 前使用 ISubsystem.AxisOutput。
- 在 McCamSwitch 類別中,當 CamSwitchMode 選擇為位置時不支援以下組合:
- IntervalType: mcTime;DurationType: mcDistance.
- IntervalType: mcTime;DurationType: mcCount.
使用案例:
以下案例雖來自於 RT/Win32 介面,但有助於理解週期開關的運作方式。
案例 1
循環開關在持續時間內完成其任務。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
40, //FirstOnPosition
60, //LastOnPosition
1, //AxisDirection. 1 = Positive.
0, //CamSwitchMode. 0 = Position.
0 //Duration. It is not used in this case.
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcDistance, //IntervalType
100, //Interval
mcDistance, //DurationType
250, //Duration
mcSetValue //ValueSource
);
案例 2
循環開關在完成任務之前中止。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
0, //FirstOnPosition
0, //LastOnPosition
1, //AxisDirection. 1 = Positive.
1, //CamSwitchMode. 1 = Time.
0.003 //Duration
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcTime, //IntervalType
0.005, //Interval
mcCount, //DurationType
3, //Duration
mcSetValue //ValueSource
);
參見